Esempi e consigli del codice sorgente dell'app PHP orientato OOP

7

Il giorno che ho temuto è arrivato. Non ho mai sentito OOP o il buon design del software era importante (sapevo che erano importanti, ma pensavo di poterlo fare senza di loro). Tuttavia avendo letto altrimenti quasi ovunque nell'interwebs, ho iniziato a temere il giorno in cui il mio cliente mi chiedeva nuove funzionalità in un'app esistente. Il giorno è arrivato e il dolore è insopportabile!

Non ho mai codificato correttamente i miei siti PHP (PHP è la mia lingua principale e la maggior parte del mio lavoro. Sto imparando Python (usando web2py)) Mi prendo cura che il sito web non si sfaldi in un uso quotidiano scenario. Io codice pagine come stavo creando un elenco di file html statici con bit di "codice magico" in ognuno di essi (questo mi infastidisce molto). Come faccio a rendere l'intera app più o meno un singolo oggetto? Ad es. Come si progetta il modello a oggetti per un'app di fatturazione?

Uso molte funzioni per fare qualsiasi cosa nello stesso modo in tutta l'app (per esempio convalida, generazione di id, calcolo delle tasse, ecc.).

Conosco le basi dell'OOP in generale. Qualcuno può indicarmi esempi di codice sorgente di app funzionali scritti in php? Oppure qualcuno può fornire dei riferimenti in modo da poter ricodificare le mie app esistenti in un modo più modulare.

    
posta abel 03.02.2011 - 17:44
fonte

3 risposte

3

Controlla il Symfony framework e Doctrine ORM, questi sono i migliori progetti PHP codificati e più ben architettati che io conosca.

Early Software Architecture

Inoltre, acquisisci familiarità con i modelli di progettazione, controlla Modelli di progettazione PHP di FluffyCat pagina e controlla ciascun modello in wikipedia per ottenere informazioni più dettagliate su ciò a cui sono destinati. In generale, i modelli di progettazione risolvono i problemi frequenti (inerenti al linguaggio e principalmente orientati agli oggetti), ad esempio, il Composito il modello di progettazione ti aiuta ad affrontare la categorizzazione annidata di elementi.

Buona fortuna e benvenuto nella prima architettura del software.

    
risposta data 03.02.2011 - 19:17
fonte
1

Penso che il passo più importante (o almeno il passo con il massimo ritorno sull'investimento) sia iniziare a utilizzare un framework (pre-costruito o quello che hai scritto) con un singolo punto di ingresso 1

Questo è il miglior metodo per esercitarsi DRY (Non ripeterti) in PHP e ti aiuterà a realizzare la separazione del codice di elaborazione e del codice di visualizzazione.

Ciò consentirà anche di iniziare a vedere come OO può essere effettivamente utilizzato in PHP. In questo momento, gli oggetti sono difficili da immaginare per il codice "magico", come lo chiami tu. La gestione delle richieste e la logica di business (dove OO è adatto) sono cose molto diverse. La gestione delle richieste può essere eseguita con OO, ma non è assolutamente necessaria e gli oggetti saranno nettamente diversi dagli oggetti necessari nella tua applicazione.

Una volta che la tua gestione delle richieste è stata separata e seguendo uno schema distinto e coerente, gli oggetti relativi alla tua applicazione ricadranno naturalmente nei metodi del controller senza mescolarsi alla gestione delle richieste, il che renderebbe il tuo codice disordinato.

Quando lo fai, imposta una buona funzione __autoload in modo da non dover importare ogni classe nella tua app per ogni richiesta. Le classi non verranno caricate fino al momento necessario.

1: Qualcosa come il framework che ho descritto in un risposta a htaccess e uno su StackOverflow su un buon framework leggero e pulito

    
risposta data 03.02.2011 - 18:06
fonte
1

Raccomando Zend Framework che si basa su Model-View-Controller architettura.

Inizia con avvio rapido o scegli uno dei molti tutorial

Alcune delle caratteristiche chiave di Zend Framework (da Wikipedia ):

  • Tutti i componenti sono completamente orientati agli oggetti PHP 5
  • Architettura use-at-will con componenti liberamente accoppiati e interdipendenze minime
  • Implementazione MVC estensibile che supporta layout e modelli basati su PHP per impostazione predefinita
  • Supporto per più sistemi di database e fornitori
  • Composizione, consegna e recupero dell'email
  • Sottosistema di memorizzazione nella cache flessibile con supporto per molti tipi di back-end, come memoria o un file system.
risposta data 03.02.2011 - 19:06
fonte

Leggi altre domande sui tag